A “distributed application” is an application for which a processing workload is shared by plural instances of the application executing in parallel. The instances can include instances of different software application programs and/or multiple instances of a given software application program. The instances can run on different hardware, so that if one instance fails due to a fault in the underlying hardware, other instances can assume its portion of the workload. The instances may operate independently of each other, or they may cooperate with each other. In the latter case, the instances may be required to communicate with each other, e.g., to synchronize data they are collecting and/or generating.
The application instances can be arranged in pods of a Kubernetes cluster, wherein each pod can hold one or more application instances. Application instances in a Kubernetes cluster can easily communicate with other application instances in the cluster, e.g., to synchronize data, while communication with entities outside the cluster can be controlled, e.g., for security purposes.